Description |
---|
Cette macro crée un point rouge (éditable) au centre de la face (centre de gravité) sélectionnée et affiche ses coordonnées dans la vue rapport. Version macro : 0.2 Date dernière modification : 2018-10-07 Téléchargement : Icône de la barre d'outils Auteur: Mario52 |
Auteur |
Mario52 |
Téléchargement |
Icône de la barre d'outils |
Liens |
Page des macros Comment installer une macro Comment créer une barre d'outils |
Version Macro |
0.2 |
Dernière modification |
2018-10-07 |
Version(s) FreeCAD |
None |
Raccourci clavier |
None |
Voir aussi |
None |
Cette macro crée un point rouge (éditable) au centre de la face (centre de gravité) sélectionnée et affiche ses coordonnées dans la vue rapport.
CenterFace
Sélectionnez une face et lancez la macro. Un point sur la face est coloré en rouge (peut être modifié).
Pour changer la couleur du point, modifiez les lignes 36, 37, 38
red = 1.0 # 1 = 255
green = 0.0 #
blue = 0.0 #
Le centre de la face et les coordonnées XYZ de ce centre seront affichés dans la vue rapport ainsi que la surface de la face et ses coordonnées.
Téléchargez l'icône pour votre barre d'outils et copiez la dans votre répertoire de macros.
Cliquez sur l'image, dans la nouvelle fenêtre faites clic droit de la souris et cliquez "Enregistrez l'image sous..."
Macro_CenterFace.FCMacro
# -*- coding: utf-8 -*- #OS: Windows Vista #OS: Windows 10 #Platform: 32-bit #Word size of OS: 64-bit #Version: 0.14.3389 #Word size of FreeCAD: 64-bit #Python version: 2.6.2 #Version: 0.17.13528 (Git) #Qt version: 4.5.2 #Build type: Release #Coin version: 3.1.0 #Branch: releases/FreeCAD-0-17 #SoQt version: 1.4.1 #Hash: 5c3f7bf8ec51e2c7187789f7edba71a7aa82a88b #OCC version: 6.5.1 #Python version: 2.7.14 #Qt version: 4.8.7 #Coin version: 4.0.0a #OCC version: 7.2.0 # 29/04/2014, 07/10/2018 __title__ = "Macro_CenterFace" __author__ = "Mario52" __url__ = "http://www.freecadweb.org/index-fr.html" __Wiki__ = "https://www.freecadweb.org/wiki/Macro_CenterFace" __version__ = "00.02" __date__ = "07/10/2018" __Comment__ = "select a face launch and list the center coordinate XYZ of face" import FreeCAD, FreeCADGui, Draft, Part def objectRealPlacement3D(obj): # search the real Placement try: objectPlacement = obj.Shape.Placement objectPlacementBase = FreeCAD.Vector(objectPlacement.Base) #### objectWorkCenter = objectPlacementBase #### if hasattr(obj, "getGlobalPlacement"): globalPlacement = obj.getGlobalPlacement() globalPlacementBase = FreeCAD.Vector(globalPlacement.Base) #### objectRealPlacement3D = globalPlacementBase.sub(objectWorkCenter)#mode=0 adapte pour BBox + Centerpoints #### else: objectRealPlacement3D = objectWorkCenter return objectRealPlacement3D except Exception: return FreeCAD.Vector(0.0, 0.0, 0.0) try: sel = FreeCADGui.Selection.getSelection() # get the selection sh = sel[0] # seletion of the first element App.Console.PrintMessage( "__Begin__________"+"\n") import unicodedata nameLabel = unicodedata.normalize('NFKD', sh.Label).encode('ascii','ignore') App.Console.PrintMessage("Label : "+ str(nameLabel)+"\n") # extract the Label App.Console.PrintMessage("Name : "+ str(sel[0].Name) +"\n") # extract the Name except: App.Console.PrintError( "Select a face"+"\n") try: SubElement = FreeCADGui.Selection.getSelectionEx()# "getSelectionEx" Used for selecting subobjects element_ = SubElement[0].SubElementNames[0] # seletion of the first element #print element_ #print sh.Faces # LineColor red = 1.0 # 1 = 255 green = 0.0 # blue = 0.0 # for i in range(len(sh.Shape.Faces)): # list and extract the data oripl_X = sh.Shape.Faces[i].CenterOfMass.x oripl_Y = sh.Shape.Faces[i].CenterOfMass.y oripl_Z = sh.Shape.Faces[i].CenterOfMass.z placementOrigine = objectRealPlacement3D( sh ) oripl_X += placementOrigine[0] oripl_Y += placementOrigine[1] oripl_Z += placementOrigine[2] App.Console.PrintMessage( "Center Face "+str(i)+" : "+str(sh.Shape.Faces[i].CenterOfMass)+"\n") # Vector center mass to face App.Console.PrintMessage( "GlobalPlacement : "+str(placementOrigine)+"\n") # Vector center mass to face Draft.makePoint(oripl_X, oripl_Y, oripl_Z) # create a point FreeCADGui.activeDocument().activeObject().PointColor = (red, green, blue) App.Console.PrintMessage( " Surface : "+str(sel[0].Shape.Faces[i-1].Area)+"\n") fco = 0 for f0 in sel[0].Shape.Faces[i].Vertexes: # Vertexes faces fco += 1 App.Console.PrintMessage(" Vertexe X"+str(fco)+": "+str(f0.Point.x)+" Y"+str(fco)+": "+str(f0.Point.y)+" Z"+str(fco)+": "+str(f0.Point.z)+"\n") except: App.Console.PrintError( "Select a face *"+"\n") App.Console.PrintMessage( "__End____________"+"\n")
ver 0.2 07/10/2018 : mise à jour pour FC 017 "getGlobalPlacement"
ver 0.1 29/04/2014